filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
sieve(cons(0, Y)) → cons(0, sieve(Y))
sieve(cons(s(N), Y)) → cons(s(N), sieve(filter(Y, N, N)))
nats(N) → cons(N, nats(s(N)))
zprimes → sieve(nats(s(s(0))))
↳ QTRS
↳ Overlay + Local Confluence
filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
sieve(cons(0, Y)) → cons(0, sieve(Y))
sieve(cons(s(N), Y)) → cons(s(N), sieve(filter(Y, N, N)))
nats(N) → cons(N, nats(s(N)))
zprimes → sieve(nats(s(s(0))))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
sieve(cons(0, Y)) → cons(0, sieve(Y))
sieve(cons(s(N), Y)) → cons(s(N), sieve(filter(Y, N, N)))
nats(N) → cons(N, nats(s(N)))
zprimes → sieve(nats(s(s(0))))
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
SIEVE(cons(s(N), Y)) → FILTER(Y, N, N)
FILTER(cons(X, Y), 0, M) → FILTER(Y, M, M)
NATS(N) → NATS(s(N))
ZPRIMES → SIEVE(nats(s(s(0))))
ZPRIMES → NATS(s(s(0)))
SIEVE(cons(0, Y)) → SIEVE(Y)
FILTER(cons(X, Y), s(N), M) → FILTER(Y, N, M)
SIEVE(cons(s(N), Y)) → SIEVE(filter(Y, N, N))
filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
sieve(cons(0, Y)) → cons(0, sieve(Y))
sieve(cons(s(N), Y)) → cons(s(N), sieve(filter(Y, N, N)))
nats(N) → cons(N, nats(s(N)))
zprimes → sieve(nats(s(s(0))))
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
SIEVE(cons(s(N), Y)) → FILTER(Y, N, N)
FILTER(cons(X, Y), 0, M) → FILTER(Y, M, M)
NATS(N) → NATS(s(N))
ZPRIMES → SIEVE(nats(s(s(0))))
ZPRIMES → NATS(s(s(0)))
SIEVE(cons(0, Y)) → SIEVE(Y)
FILTER(cons(X, Y), s(N), M) → FILTER(Y, N, M)
SIEVE(cons(s(N), Y)) → SIEVE(filter(Y, N, N))
filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
sieve(cons(0, Y)) → cons(0, sieve(Y))
sieve(cons(s(N), Y)) → cons(s(N), sieve(filter(Y, N, N)))
nats(N) → cons(N, nats(s(N)))
zprimes → sieve(nats(s(s(0))))
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
NATS(N) → NATS(s(N))
filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
sieve(cons(0, Y)) → cons(0, sieve(Y))
sieve(cons(s(N), Y)) → cons(s(N), sieve(filter(Y, N, N)))
nats(N) → cons(N, nats(s(N)))
zprimes → sieve(nats(s(s(0))))
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
NATS(N) → NATS(s(N))
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ QDP
NATS(N) → NATS(s(N))
NATS(s(z0)) → NATS(s(s(z0)))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ QDP
NATS(s(z0)) → NATS(s(s(z0)))
NATS(s(s(z0))) → NATS(s(s(s(z0))))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ NonTerminationProof
↳ QDP
↳ QDP
NATS(s(s(z0))) → NATS(s(s(s(z0))))
NATS(s(s(z0))) → NATS(s(s(s(z0))))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
FILTER(cons(X, Y), 0, M) → FILTER(Y, M, M)
FILTER(cons(X, Y), s(N), M) → FILTER(Y, N, M)
filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
sieve(cons(0, Y)) → cons(0, sieve(Y))
sieve(cons(s(N), Y)) → cons(s(N), sieve(filter(Y, N, N)))
nats(N) → cons(N, nats(s(N)))
zprimes → sieve(nats(s(s(0))))
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
FILTER(cons(X, Y), 0, M) → FILTER(Y, M, M)
FILTER(cons(X, Y), s(N), M) → FILTER(Y, N, M)
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
FILTER(cons(X, Y), 0, M) → FILTER(Y, M, M)
FILTER(cons(X, Y), s(N), M) → FILTER(Y, N, M)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
SIEVE(cons(0, Y)) → SIEVE(Y)
SIEVE(cons(s(N), Y)) → SIEVE(filter(Y, N, N))
filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
sieve(cons(0, Y)) → cons(0, sieve(Y))
sieve(cons(s(N), Y)) → cons(s(N), sieve(filter(Y, N, N)))
nats(N) → cons(N, nats(s(N)))
zprimes → sieve(nats(s(s(0))))
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
SIEVE(cons(0, Y)) → SIEVE(Y)
SIEVE(cons(s(N), Y)) → SIEVE(filter(Y, N, N))
filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
sieve(cons(0, x0))
sieve(cons(s(x0), x1))
nats(x0)
zprimes
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
SIEVE(cons(0, Y)) → SIEVE(Y)
SIEVE(cons(s(N), Y)) → SIEVE(filter(Y, N, N))
filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
SIEVE(cons(0, Y)) → SIEVE(Y)
SIEVE(cons(s(N), Y)) → SIEVE(filter(Y, N, N))
POL(0) = 0
POL(SIEVE(x1)) = x1
POL(cons(x1, x2)) = 1 + x1 + x2
POL(filter(x1, x2, x3)) = x1
POL(s(x1)) = 1
filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
filter(cons(X, Y), 0, M) → cons(0, filter(Y, M, M))
filter(cons(X, Y), s(N), M) → cons(X, filter(Y, N, M))
filter(cons(x0, x1), 0, x2)
filter(cons(x0, x1), s(x2), x3)